In conventional messaging systems, such as systems implementing queuing protocols like AMQP, the communication routes between brokers are statically defined at system setup, often based on the connections of message consumers or recipients who exist at the time that the network is first configured. Such systems typically forward all messages from message producers to all brokers in the network because a consumer for any particular message may potentially be connected to any broker in the network. The system, however, has no knowledge or tracking of whether or not a consumer for a particular message exists or is connected along any particular route.
As a consequence, conventional systems constantly forward messages to brokers that have no consumers connected to them, either directly or indirectly, and eventually those messages are discarded unconsumed. This results in inefficient and unnecessary use of system resources, such as communication bandwidth between brokers, as well as processing and storage resources on each individual broker that unnecessarily handles a message for which there is no downstream consumer.
A dynamically routed messaging network, for example as described in the U.S. patent application entitled “Systems and Methods for Identifying Linked Message Brokers in a Dynamic Routing Network,” by Theodore Ross filed on Mar. 24, 2011, assigned application Ser. No. 13/071,306, (which is incorporated herein by reference in its entirety), addresses the above-mentioned drawbacks of conventional messaging systems by refraining from forwarding a message to nodes that do not have a consumer currently connected to them. A difficulty arises, however, regarding what to do with a message when there is no consumer currently connected to the dynamically routed messaging network that can consume the message. One solution is to simply discard such messages. This solution, however, leads to the undesirable result that a message consumer does not receive messages that were sent while the message consumer was not connected to the messaging network.
Accordingly, it is desirable to provide systems and methods that dynamically route messages according to the future availability of a message consumer at times when the message consumer is not connected to the messaging network. It is also desirable to provide systems and methods that make backlogged messages available to the consumer as quickly as possible once the consumer connects to the messaging network.